Uncategorized
4.5k words
1.linux文件权限一共10位长度 第一段指文件类型 第二段指拥有者所具有的权限 第三段指所属组的成员对于这个文件具有的权限 第四段指其他人对于这个文件有没有任何权限 2.shell是一种命令解释程序 3.>将标准输出信息写入一个新文件(重定向),>>将标准输出信息添加到一个已存在的文件中 4.ctrl+alt+F1:图形界面切换到文字终端界面 5.whereis -b [filename]:查找系统中指定文件名的二进制文件 6.free显示系统中已用资源和空闲资源,m参数以mb为单位显示系统中的资源,t显示系统中的资源并最后进行统计 7.关闭linux的命令: halt:立刻关机 shutdown -h now:立刻关机(root) poweroff:立刻关机 8.less显示文件内容时可以上下滚动而more不可以 9./proc/cpuinfo获得CPU的相关信息 10.grub可以引导windows操作系统.grub是引导装入器,负责装入内核并引导Linux系统,也可以引导其他操作系统.如果引导器不能很好的工作或者不具有弹性,那么很可...
Uncategorized
2.9k words
Description 题目描述:忘了 附件内容: from Crypto.Util.number import * from random import * from libnum import * import gmpy2 from secret import x flag = b'?????????' m = bytes_to_long(flag) def obfuscate(p, k): nbit = p.bit_length() while True: l1 = [getRandomRange(-1, 1) for _ in '_' * k] l2 = [getRandomRange(100, nbit) for _ in '_' * k] l3 = [getRandomRange(10, nbit//4) for _ in '_' * k] l4 = [getRandomRange(2, 6) for _ in '_' *k] A = sum([l1[_] * 2 ** ...
Uncategorized
534k words
我是傻逼 Description 题目描述:忘了 附件内容 from secret import p, q, flag from Crypto.Util.number import bytes_to_long def gcd(a, b): s = 0 while b != 0: print(a, b) if isOdd(a): if isOdd(b): a = a - b a = rshift1(a) if a < b: a, b = b, a else: b = rshift1(b) if a < b: a, b = b, a else: if isOdd(b): ...
Uncategorized
2.3k words
前言 这题当时国赛的时候由于没有怎么碰过MISC,到最后一步没做出来,实在是难受,今天复盘了一下 Analyze 拿到题目附件是一个流量包,可以看到分别有2.4.0,2.3.0,2.2.0,2.10.0,2.8.1,2.8.0这些地址的USB流量,我们可以一个一个筛选出来,然后通过导出特定分组进行保存,用UsbKeyboardDataHacker来提取其中的信息,最终会发现2.10.1和2.8.1中有有效信息 这里展示一下2.8.1的提取过程 # usb.src=="2.8.1"||usb.dst=="2.8.1" 31 0.010805 2.8.1 host USB 35 URB_INTERRUPT in 32 0.010818 host 2.8.1 USB 27 URB_INTERRUPT in 33 0.110764 2.8.1 host USB 35 URB_INTERRUPT in 34 0.110777 host 2.8.1 USB 27 URB_INTERRUPT in 35 0.166...
Uncategorized
13k words
通过file指令可以看到程序编译的链接状态,在知道程序可以通过ROP来打的情况下,根据statically linked和dynamically linked两种链接方式来构造对应的ropchain和对应不同的攻击思路 dynamically linked 如果程序是动态链接的话,泄露程序函数的真实地址后拿到libc基址去得到例如system和/bin/sh的地址,这里不再赘述 statically linked 如果程序是静态链接,相对与动态链接就没有那么麻烦了,有的程序我们可以通过ROPgadget这个工具来帮助我们构造我们的ropchain ROPgadget --binary 程序名 --ropchain Example-inndyrop m1nus@ubuntu:~/elf/buu/inndy_rop$ file inndy_rop inndy_rop: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, Buil...
Uncategorized
537 words
为什么需要stack pivoting 当stack overflow的空间不足时 怎么实现stack pivoting 通过将ebp覆盖成构造的fake_ebp,然后利用leave_ret这个gadget将esp劫持到fake_ebp的地址上,从而实现栈的迁移 为什么是leave ret leave: mov esp , ebp; pop ebp; ret: pop eip 实现过程 首先程序有stack overflow漏洞,我们将栈覆盖成下面的样子 执行完mov esp , ebp后 接着就是pop ebp,执行完后如图 由于esp是栈顶指针,当pop ebp后,栈顶的元素被弹给了ebp,所以esp应当向下移4个字节,也就是一个单位 下一步通过read()函数的ret来把内容输入到fake_ebp1地址上,这里主要是要将fake_ebp2的地址给到fake_ebp1的地址上 下一步就来到了leave_ret,也就是重复上方的mov esp,ebp pop ebp和pop eip mov esp,ebp 后 接着pop ebp,由于fake_...
Uncategorized
2.5k words
Stack Smashing 当canary被覆盖后,会call到__stack_chk_fail打印argv[0]这个指针指向的字符串,默认是程序的名字,如果我们把它覆盖为其他的地址时,它就会把其他内存地址的信息给打印出来 Example:wdb2018_guess Analyze Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000) This is GUESS FLAG CHALLENGE! Please type your guessing flag 123 You should take more effort to get six sence, and one more challenge!! Please type your guessing flag 以上是程序开启的一些保护和大概的流程 main __int64 __fastcall main(__int64 a1, char ...